Cloud computing has become a popular approach for obtaining access to (sometimes large-scale) computing resources. Cloud computing allows users to build virtualized data centers which include compute, networking, application, and storage resources without having to build or maintain a physical computing infrastructure. The virtualized data center may provide a user with a segmented virtual network located in the cloud, typically alongside virtualized data centers of other users. Such a virtualized data center may be rapidly scaled up (or down) according to the computing needs of a given user without the need to maintain excess computing capacity between peak demand periods. For example, an online retailer can scale a virtualized data center to meet increased demand during the holiday shopping season without having to maintain the underlying physical computing infrastructure used to provide the retailer's online presence.
Often times, a cloud computing environment is created using multiple data centers, with each data center providing various computing resources to the cloud. Such data centers are frequently located in different geographical locations. Furthermore, the resources that each data center provides to the cloud may differ. For example, a first data center may provide higher performance computing resources than a second data center, or may provide fast network access to particular computing resources that are not provided at all by the second data center. Additionally, the workloads of the computing resources provided by each of the data centers may differ as well. For instance, while the computing resources of the first data center may be operating at 90% capacity, the computing resources of the second data center may only be operating at 20% capacity.